perm filename IJVAR.SAI[PIX,HPM] blob
sn#447305 filedate 1979-06-04 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "VARIAN"
C00006 00003 INTEGER I,J,K,NF
C00010 ENDMK
C⊗;
BEGIN "VARIAN"
DEFINE VRN='350; comment device 350, gents;
comment
CONO/CONI bits for the VRN (Varian Plotter)
for the meanings of most of these bits, refer to the
Varian "SERVICE AND MAINTENANCE MANUAL STATOS 41/42 SERIES PRINTER/PLOTTERS";
DEFINE
SCNCMP='100000 , comment scan completed (reado);
NOTRDY='40000 , comment device not ready (reado);
BUFBZY='20000 , comment buffer busy (reado);
PRCBZY='10000 , comment paper controller busy (reado);
FRMBOT='4000 , comment bottom of form (reado);
REDRDY='1000 , comment read ready (reado);
NOTONL='400 , comment not on line (reado);
SUPPLO='200 , comment supplies low (reado);
VIDBZY='100 , comment video busy (reado);
INTTST='40 , comment interface test mode (writo);
DATARQ='20 , comment data request (reado);
INTENA='10 , comment interrupt enable (readw);
PIEN33='4 , comment PI bit 33 (readw);
PIEN34='2 , comment PI bit 34 (readw);
PIEN35='1 ; comment PI bit 35 (readw);
DEFINE RASTERWRITE='740;
DEFINE LINESYNC='443;
DEFINE RESETAUTO='445;
DEFINE ONESTEP='464;
DEFINE SLEW='665;
REQUIRE "VIXHDR.SAI[VIS,HPM]" SOURCE_FILE;
INTEGER CMDCNT,CMDRUN,CMDWD,RUNCNT,FOO,OCH; BOOLEAN LINES;
PROCEDURE VSINIT; BEGIN
OCH←GETCHAN;
OPEN(OCH,"DSK",0,0,19,1,FOO,FOO); ENTER(OCH,"VARIAN.DAT[TMP,HPM]",FOO);
CMDCNT←0; RUNCNT←0; CMDWD←0; CMDRUN←0; END;
REQUIRE VSINIT INITIALIZATION;
REQUIRE "{}{}" DELIMITERS;
DEFINE VSEND={
CMDCNT←CMDCNT+1; CMDWD←(CMDWD LSH 9) LOR CMD;
IF CMDCNT=4 THEN
BEGIN
IF CMDWD=(CMDWD ROT 18) THEN
IF CMDWD=CMDRUN THEN RUNCNT←RUNCNT+1 ELSE
BEGIN
IF RUNCNT=1 THEN OUT(OCH,CVOS(CMDRUN)&'15&'12) ELSE
IF RUNCNT>1 THEN
OUT(OCH,CVOS(('770 LSH 27)+(RUNCNT LSH 18)+(CMDRUN LAND '777777))&'15&'12);
RUNCNT←1; CMDRUN←CMDWD;
END
ELSE
BEGIN
IF RUNCNT=1 THEN OUT(OCH,CVOS(CMDRUN)&'15&'12) ELSE
IF RUNCNT>1 THEN
OUT(OCH,CVOS(('770 LSH 27)+(RUNCNT LSH 18)+(CMDRUN LAND '777777))&'15&'12);
RUNCNT←0; CMDRUN←0;
OUT(OCH,CVOS(CMDWD)&'15&'12);
END;
CMDCNT←0; CMDWD←0;
END};
INTEGER I,J,K,NF;
PRINT("Number of bit files:"); NF←CVD(INCHWL);
PRINT("Outlines?"); LINES←(INCHWL LAND '137)="Y";
BEGIN "BIT FILE"
STRING ARRAY SF[1:NF];
INTEGER ARRAY PIC[1:NF,0:10]; INTEGER ARRAY PCH[1:NF];
FOR I←1 STEP 1 UNTIL NF DO
BEGIN DO PRINT("BIT FILE ",I,":") UNTIL PFLDIM(SF[I]←INCHWL)>0;
PCH[I]←OPNPFL(SF[I],PIC[I,0]); END;
BEGIN INTEGER CMD,MAXL;
CMD←RASTERWRITE; VSEND; CMD←LINESYNC; VSEND; CMD←RESETAUTO; VSEND;
MAXL←PIC[1,PCLN]; FOR I←2 STEP 1 UNTIL NF DO MAXL←MAXL MAX PIC[I,PCLN];
FOR I←0 STEP 1 UNTIL MAXL-1 DO
BEGIN
INTEGER PT,RH,MI,MIP,LO,HI;
INTEGER ARRAY SCNLIN[0:117];
FOR K←1 STEP 1 UNTIL NF DO IF I<PIC[K,PCLN] THEN
BEGIN
INTEGER ARRAY SCNLI[0:PIC[K,LNWD]+3];
ARRYIN(PCH[K],SCNLI[0],PIC[K,LNWD]);
MI←(PIC[K,LNWD]-1)%2+1;
IF K MOD 2=1 THEN MIP←(4224*(K-.5)/NF)/36+.5
ELSE MIP←(4224*(K-1.5)/NF)/36+.5+24;
MIP←MIP+12;
LO←(1-MI) MAX -MIP; HI←(PIC[K,LNWD]-1-MI) MIN (117-MIP);
FOR J←LO STEP 1 UNTIL HI DO SCNLIN[J+MIP]←SCNLIN[J+MIP] LOR SCNLI[J+MI];
END;
IF LINES THEN FOR K←0 STEP 1 UNTIL NF DO
DPB(1,POINT(1,SCNLIN[(K*4223%NF)%36],(K*4223%NF) MOD 36));
IF LINES ∧ I=0 THEN ARRCLR(SCNLIN,-1);
RH←117; WHILE RH>0 ∧ SCNLIN[RH]=0 DO RH←RH-1;
IF SCNLIN[RH]≠0 THEN
FOR J←0 STEP 2 UNTIL RH DO
BEGIN
CMD←LDB(PT←POINT(8,SCNLIN[J],7)); VSEND;
CMD←ILDB(PT); VSEND; CMD←ILDB(PT); VSEND; CMD←ILDB(PT); VSEND;
CMD←((SCNLIN[J] LAND '17) LSH 4) LOR (SCNLIN[J+1] LSH -32); VSEND;
CMD←LDB(PT←POINT(8,SCNLIN[J+1],11)); VSEND;
IF J<116 THEN
BEGIN
CMD←ILDB(PT); VSEND; CMD←ILDB(PT); VSEND; CMD←ILDB(PT); VSEND;
END;
END;
CMD←ONESTEP; VSEND;
END;
RELEASE(OCH);
END;
END "BIT FILE";
END "VARIAN";